═══ 1. Introduction ═══ NcFTP is a user interface to the Internet standard File Transfer Protocol. This program allows a user to transfer files to and from a remote network site, and offers additional features that are not found in the standard interface, ftp. The program runs in one of three modes: visual mode, line mode and colon mode. If your system is somewhat modern, the default mode should be visual mode. This is a full-screen interface that uses the curses library. With visual mode, you edit the program's settings with a nice screen interface instead of typing arcane commands. If you are not in visual mode, you will be using line mode for the interactive shell. This mode is a no-frills command-line interface that will look like the default ftp program's command shell. The third mode, colon mode, refers to the program's ability to do a quick retrieve of a file directly from your shell command line, without going into the program's own shell. This mode is useful for shell scripts. NcFTP v2.3.0 provides several enhancements over the standard ftp available with IBM's TCP/IP and Warp's IAK. NcFTP offers serveral benefits and enhancements, such as:  A progress indicator bar  Re-get support - The abilitity to automatically restart an aborted ftp transfer at the point where it left off.  Colon-mode, which allows you to quickly pick up a single file by typing a single command on the command line.  Recursive gets; Now you can retrieve entire sub-directory trees using the -r switch with the get command.  Get `newer than X-files'; This retrieves files that are newer than X days.  Get new files only; NcFTP now has the ability to skip files that you already have, making it easy to mirror other sites, or just pick up new files since your last ftp session.  Integrated hosts editor. ═══ 2. What's Different With This Port ═══ All features of the original UNIX version of NcFTP have been maintained, with two exceptions:  SOCKS support has not been implemented.  NcFTP does not go into `silent mode' when in the background. All other features have been maintained. Also, there are some new features or enhancements with this port. Specifically they are:  FAT partition friendly, NcFTP will work equally as well on FAT partititions as it will on HPFS partititions.  NcFTP will interpret / as \ for local system file names.  Background Paging. This feature was introduced by Steve Willer in the v1.9.3 port of NcFTP. This features gives you the ability to have your pager program start in a separate window. The window title bar will refect exactly what is being viewed. The specific commands are: - bpage - bls - bdir - bredir  Complete control over the NcFTP's colors. There is now a Color Configuration screen which allows you to set your favorite colors.  NcFTP for OS/2 no longer uses the `i.am.running' flag file to determine if other copies of NcFTP are running. It now uses OS/2 semaphores. This is a key feature incase NcFTP were to crash, it will not leave old files laying around.  NcFTP now clears the screen before calling a command shell.  The `ESCAPE' key will clear the input line, just like OS/2.  When writing files to a FAT partition, NcFTP will set the extended attribute .LONGNAME to the actual file name.  NcFTP will store a URL type reference in the .SUBJECT extended attribute of each file retrieved that shows the host, directory and name of the file retrieved. For example, it will store the following: ftp://hobbes.nmsu.edu/incoming/ncftp230.zip Three new Global Preference Options are now available:  Maximum Redials Sets the maximum number of retries to connect to a busy system.  Redial Delay Sets the delay between redials.  Pager in new window All NcFTP pager related commands run in a separate window. ═══ 3. Differences Between NcFTP v.1.9.3 ═══ Differences between NcFTP v1.9.3 and NcFTP v2.3.0  Using "colon-mode" never enters the shell. Whenever you use it, the program will do it's thing, and exit.  You don't get the fancy prompts anymore when using "line" mode (i.e. you turned off visual mode by running with "ncftp -L").  When in visual mode, you can't use GNU Readline or Getline. You can use them if not in visual mode though. In visual mode, you get to use my homegrown line editor/history. It lets you scroll through the history, and use some simple editing commands.  "get"/"put" always behaves like "mget"/"mput."  There is no .netrc file. You do get a ~/.ncftp directory, and in it you get files called "hosts" and "prefs." You can also put your "macros" file there, and if you have logging turned on, a file called "log" is stored there.  For "macdef init" macros, you need to put them in your "macros" file named as ".open.. So for an init macro for wuarchive, you would use a macro named ".open.wuarchive" instead.  Other commands previously supported for backwards compatibility with "ftp" are gone. So are some other less useful commands.  The gateway hack has been removed. You'll have to use SOCKS, which has not been implemented in the OS/2 port.  Hostname abbreviation rules have changed a bit. NcFTP assigns a unique nickname to site the first time you open it (this nickname can be changed using the host editor if you don't like it). When you try opening a site, you can either type it's full name again, or type it's nickname. You can abbreviate the nickname, but not other parts of the site name. For example, if you had an entry called "wuarchive.wustl.edu" in your host file with a nickname of "wuarchive," You could do "open wuarchive" or "open wuar" but "open wustl" would not. This avoids the confusion between abbreviations and local network hosts. ═══ 4. Installation ═══ 1. Place NcFTP.exe in your path. 2. Place ncftp.inf in a directory referenced by the BOOKSHELF environment variable in your CONFIG.SYS. 3. Be sure you have the latest version of emx's run-time libraries. NcFTP requres emx09b fix01 or later to run properly. If you have an older version of emx runtimes, you can get the latest from: ftp://hobbes.nmsu.edu/os2/unix/emx09b/emxrt.zip 4. NcFTP also requires an external pager program that views text files from the remote host. By default, NcFTP uses the OS/2 more command, which is not very robust. I recommend you use less.exe. Less.exe has been ported from Unix and provides several enhancements over the more command. If you don't have less.exe or need a later version, you get the it from: ftp://hobbes.nmsu.edu/os2/unix/less291.zip 5. The following environment variables are required for NcFTP to run properly:  HOME this points to your home directory. NcFTP will create a subdirectory under this directory called .ncftp (or _ncftp for FAT partitions). This is where NcFTP will store its configuration files.  NCFTPDIR can be used inplace of the HOME environment variable if necessary.  HOSTNAME If NcFTP is unable to resolve your hostname, set this environment variable. i.e.; SET HOSTNAME=myhostname  DOMAIN If NcFTP is unable to resolve your domain name, set this environment variable to your domain name: SET DOMAIN=inetport.com 6. The first time you run NcFTP, issue the prefs command and setup your preferences. For more information on preference, see the PREFERENCES ═══ 5. Running NcFTP ═══ ncftp [program options] [[open options] hostname[:pathname]] OPTIONS: Program options: -D : Turn debug mode and trace mode on. -L : Don't use visual mode (use line mode). -V : Use visual mode. -H : Dump the version information. Command-line open options: -a : Open anonymously. -u : Open with username and password prompt. -p X : Use port number X when opening. -r : Redial until connected. -d X : Redial, delaying X seconds between tries. -g X : Give up after X redials without connection. Command-line retrieve options: -C : Force continuation (reget). -f : Force overwrite. -G : Don't use wildcard matching. -R : Recursive. Useful for fetching whole directories. -n X : Get selected files only if X days old or newer. ═══ 6. Introduction to Visual Mode ═══ When entering visual mode, the screen clears and is rewritten with the splash screen. You should see the black status bar occupying the second to last row on the screen. Beneath the status bar is the input line, where you type commands to the program's shell. The program then waits for you to do something. Usually this means you want to open a remote filesystem to transfer files to and from your local machine's filesystem. To do that, you need to know the symbolic name of the remote system, or its Internet Protocol (IP) address. For example, a symbolic name might be typhoon.unl.edu, and its IP address could be 129.93.33.24. To open a connection to that system, you use the program's open command: open typhoon.unl.edu open 129.93.33.24 Both of these try to open the machine called typhoon at the University of Nebraska. Using the symbolic name is the preferred way, because IP addresses may change without notice, while the symbolic names usually stay the same. When you open a remote filesystem, you need to have permission. The FTP Protocol's authentication system is very similar to that of logging in to your account. You have to give an account name, and its password for access to that account's files. However, most remote systems that have anything you might be interested in don't require an account name for use. You can often get anonymous access to a remote filesystem and exchange files that have been made publicly accessible. The program attempts to get anonymous permission to a remote system by default. What actually happens is that the program tries to use anonymous as the account name, and when prompted for a password, uses your E-mail address as a courtesy to the remote system's maintainer. You can have the program try to use a specific account also. That will be explained later. If the connection succeeded, you should see the status bar change to hold the remote system's name on one side, and the current remote directory on the other side. To see what's in the current remote directory, you can use the program's and ls dir commands. The former is terse, preferring more remote files in less screen space, and the latter is more verbose, giving detailed information about each item in the directory. You can use the program's cd command to move to other directories on the remote system. The cd command behaves very much like the command of the same name in the Bourne and Korn shell. The purpose of the program is to exchange data with other systems. You can use the program's get command to copy a file from the remote system to your local system: get README.txt The program will display the progress of the transfer on the screen, so you can tell how much needs to be done before the transfer finishes. When the transfer does finish, then you can enter more commands to the program's command shell. You can use the program's put command to copy a file from your system to the remote system: put something.tar When you are finished using the remote system, you can open another one or use the quit command to terminate the program. ═══ 7. The Bookmarks File ═══ One of the program's goals is to minimize typing and maximize convenience. The program automatically saves information about the sites you call on in a special file called the bookmarks file, which is stored in the subdirectory of your home directory. .ncftp Each bookmark saves the host name along with other settings, including the remote directory you were in, the account information, and more. This makes it easy to call back a site later and have everything be like it was when you left the last time. A big advantage of saving this information is that you can refer to a site by a shorter, more meaningful name, instead of using the full symbolic host name for a site. For example, if you called a site named typhoon.unl.edu frequently, its bookmark name might be just typhoon. Then, instead of: open typhoon.unl.edu you could use: open typhoon You could also abbreviate the bookmark name further, as long as the program will know which site you are referring to. If no other bookmark's name starts with the letters ty, you could do just: open ty Use the bookmarking feature to assign mnemonic names to hosts whose real names don't give much hint to what you call there for. A popular game called Nethack is archived at linc.cis.upenn.edu, in the /pub/NH3.1 directory. You could assign nethack as the bookmark name for this site. Then you could try: open nethack instead of: open linc.cis.upenn.edu ═══ 8. Using The Bookmark Editor ═══ To manipulate the bookmarks stored in your bookmarks file, you use the program's bookmark editor. Run the bookmark editor by typing the bookmarks command from within the program. This brings up a new screen of information. On the right side is the list of remote systems the program has saved for you already. Each time you open a connection to a remote system, the program saves an entry in your bookmark file for you automatically. If you have not opened any sites successfully yet, this list would be empty. On the left side is some instructions saying what you can do with the list. The bookmark editor is waiting for you to do something, like select a bookmark whose settings you want to edit. Some bookmark editor hot key commands are one key only. You do not need to hit enter after the hot key commands. To exit the bookmark editor for example, you would just type the x key only. The multikey commands require a slash first and do require the enter key. To delete the selected site, for example, you would type the / key, then del, and then the enter key. You can use the d key to move down one line in the list, and the u key to move up one line. If you have many entries in the bookmark list, you won't be able to see them all at once. The bookmark list scrolls as appropriate to bring the other sites into view. Use the p and n keys to move pages at a time. Another way to select a site in the bookmark list is to use the capital letters. If you had many entries in my bookmark list, but wanted to select a site whose bookmark name was nethack, you could type N and the list would zoom to the first site with bookmark starting with the letter n. After you have hilited a bookmark you want to edit, use the /ed command. Doing that brings up another screen with the settings for that bookmark. In the Bookmark Options screen, you use hot keys to select a setting to edit. To edit the bookmark name, for example, you would type a. When you are finished editing this bookmark, hit the x key to return to the bookmark editor's screen. ═══ 9. Bookmark Options ═══ Each remote site stored in your bookmarks file can have individual options specified. Bookmark Name Hostname User Password Account Directory Save Dir on Exit Transfer Type Port Has SIZE command Has MDTM command Can use passive FTP Operating System Comment ═══ 9.1. Bookmark Name ═══ Edit the Bookmark name field to change the name you use to open this site with. Remember, when you change the bookmark name , you must use this name to refer to this particular bookmark, so if you change it to foobar, you need to use open foobar. This is required because you can have multiple entries for a remote host. For example, you could have two bookmarks for wuarchive.wustl.edu, named wumac and wuwindows. If you were to say open wuarchive.wustl.edu, it would not be clear to the program which host entry to use. ═══ 9.2. Hostname ═══ Full hostname of the remote site. You can also specify an IP address. ═══ 9.3. User ═══ Change the login information for the site by editing the User, Password, and Account fields. Normally you would want to leave these as is for anonymous logins. Depending on your situation, you might want to use a specific account on the remote system. This is one way to get the program to use a non anonymous login. ═══ 9.4. Password ═══ Password to use with this site. By default, NcFTP will use the password specified in the preferences file. ═══ 9.5. Account ═══ Specifies the account to use on the remote system. ═══ 9.6. Directory ═══ The Directory field specifies the directory to move to upon successful connection to the remote host for this bookmark. When you close the site, this field is updated for you automatically to be the directory you were in when you closed the site. ═══ 9.7. Save Dir on Exit ═══ If this field is set to Yes NcFTP will save the current remote directory each time you close the site. Otherwise, if this field is set to No, NcFTP will not save the current directory when the site is closed. ═══ 9.8. Transfer type ═══ The Transfer Type field can be changed to use a different translation mode when transferring files. This program is usually running on an OS/2 system, and most remote systems are UNIX variants, so the default transfer type is, which does no binary translation at all. However, when you need to work with plain text files and transfer them between non-UNIX systems, you can change this to ASCII. That will guarantee that the text-only files will translate correctly. Most often, you will need to use the binary transfer type. ═══ 9.9. Port ═══ The Port field can be changed so that the program tries to use a non-standard port number. I have yet to ever need a different port number, but this capability is here in case it's needed. ═══ 9.10. Has SIZE command ═══ The Has SIZE Command field will probably not need to be edited. This field is mostly for your information only. The SIZE command is an FTP Protocol command that the program would like the remote server to support. If it is supported, the program can get an exact number of bytes of remote files before transferring. That is nice to know so the progress reports work better. ═══ 9.11. Has MDTM command ═══ The Has MDTM Command field will probably not need to be edited either. If the remote server supports it, the program can get the exact modification date of the remote file, and set the local file to the same date. ═══ 9.12. Can use passive FTP ═══ The Can Use Passive FTP field specifies whether the remote server allows use of the FTP Protocol's PASV command. There are two ways to set up FTP connections. The default way is what is called Port FTP . Unfortunately, Port FTP cannot be used when your local host is hiding behind a Firewall. Passive FTP can be used with a firewall, and that's why I would like to use that method if possible. You probably will not need to edit this field, since this can be detected automatically most of the time. ═══ 9.13. Operating System ═══ The Operating System field is used by the program to tell if it can rely on certain dependencies to specific operating systems. If the OS is a UNIX variant, the program can make some assumptions about the remote server's responses. For example, if the OS is UNIX, the ls command tries to use the flags, like you could with -CF /bin/ls -CF on UNIX. If the OS wasn't UNIX, the -CF might not make sense to the remote server and it might complain. You probably will not need to edit this field, since this can be detected automatically most of the time. ═══ 9.14. Comment ═══ The comment field can be used to store a brief description about the site. For example, for my nethack entry, you could use this field to hold Archive site for latest version of Nethack. When you are in the bookmark editor's window, if you hilite a site that has a comment, it is printed at the bottom of the screen so you do not have to edit the site to look at it. ═══ 10. Preferences ═══ In addition to remote-host specific options, the program has global options that are user-configurable. To change the program's preferences, run the prefs command from within the program. Default Open Mode Anonymous Password Blank Lines Between Commands Default FTP mode User Log Size Max Bookmarks to Save Pager Progress Meter Remote Messages Startup in Local Dir Startup Messages Network Timeout Trace Logging File Timestamps Screen Graphics Redial Attempts Pause Between Redials Pager In Separate Window Background Pager in Full Screen Session Turn on/off NcFTP's Bell ═══ 10.1. Default Open Mode ═══ The Default open mode field specifies how the program should try to open connections. If you do a lot of anonymous FTPing, you should leave this set to anonymous. You might want to set this field to user and password if the hosts you FTP to most often don't allow anonymous logins. For example, if you are using the program on your company network to copy things from different company machines, you would not want to use anonymous FTP mode. ═══ 10.2. Anonymous Password ═══ The Anonymous password field lets you change the value given to the remote host when you use an anonymous login. It is customary (and sometimes required) to use your e-mail address as the password for anonymous FTP, so the remote host's administrator knows who is using the service. If the program didn't get your e-mail address right, or you want to use something different, you can change it here. ═══ 10.3. Blank Lines Between Cmds ═══ The program now uses more whitespace than before to reduce eyestrain. If you prefer, you can turn off that feature by changing the Blank lines between cmds field. ═══ 10.4. Default FTP Mode ═══ This option allows you to choose the default FTP mode. Normally you do not need to change this value. If you are running behind a firewall or through a gateway, you may need to set this option to the following: Passive, but fall back to port if needed or Passive FTP only (PASV) Try the first option, if it does not work, try the second. ═══ 10.5. User Log Size ═══ The program can log the transfers you do to a file so you can refer to the log if you can't remember where you got something. To turn on the log, which is saved as ~/.ncftp/log, you can set the User log size field to a number greater than zero. You probably do not want to let this file grow forever, so you set the maximum size of the log by setting that field. ═══ 10.6. Max Bookmarks to Save ═══ Although the program is perfectly happy saving every site you ever open in the bookmarks file, you may want to put an upper bound on the number of sites saved. If you have a slow machine, which might cause the program to take awhile to load and save the bookmarks, or if disk space is at a premium, you can set the Max bookmarks to save field to limit the number of bookmarks saved. Once that limit is reached, the program will discard sites whose time since the last connection is the longest. In other words, a site you only called once a long time ago and forgot about will be the first to go. ═══ 10.7. Pager ═══ Several of NcFTP's functions use an external pager program to view large amounts of text. For example, the page command retrieves a remote file and uses the pager to view it. You can specify the program to use (and its command line flags, if any) by setting the pager field. I recommend using LESS.EXE available from hobbes.nmsu.edu as: ftp://hobbes.nmsu.edu/os2/unix/less291.zip ═══ 10.8. Progress Meter ═══ When you transfer files between the remote host and your local host, the program uses a progress meter to show you the status of the transfer. The program has a few different progress meters to choose from, and you can try out the other ones by changing the Progress meter field. ═══ 10.9. Remote Messages ═══ You can control how much of the remote server's chatter is printed by changing the Remote messages field. The program always prints error messages, but most of the time the remote server doesn't have anything useful to say. There are a couple of messages that may be worth printing. The first is the startup message. Typically, when you connect to a server it has some important information about the server. Some servers have chdir messages, which are sent when you enter a special directory. You specify whether to print these messages by toggling the Remote messages field. ═══ 10.10. Startup in Local Dir ═══ By default, the program stays in the same directory you were in when you ran the program, so that downloads will go in that directory. If you would like to use a download directory so that all of your downloads go to a specific directory, sepcify it here. This can prevent your from exceeding your quota, and overwriting your other files. You can set the Startup in Local Dir field to have the program change the local directory each time when the program starts up. Then you know where to expect your downloads to end up. ═══ 10.11. Startup Messages ═══ The program itself has some messages which you may get tired of and want to turn off. You can change the Startup messages field to specify whether the program prints its splash screen and whether it prints a tip on how to maximize use of the program. ═══ 10.12. Network Timeout ═══ Specifies the amount of time in seconds before NcFTP gives up trying to communicate with the remote host. ═══ 10.13. Trace Logging ═══ Turns on or off trace logging. When trace logging is on, NcFTP will create a trace file in your ~/.ncftp directory that contains useful debugging information about the last session. ═══ 10.14. File Timestamps ═══ When you retrieve a remote file, by default the program tries to also set the exact modification time of the local file as the remote file. You can turn that off by changing the File timestamps field. ═══ 10.15. Screen Graphics ═══ If you don't like the full-screen graphics, you can use the line- oriented mode by changing the Screen graphics field. Once you turn visual mode off from the Preferences screen, you won't be able to get back to the preferences screen again when using line mode. To get back into visual mode, you can run the program with the -V flag, like: ncftp -V By default, NcFTP will only try once to open a remote site. You can set Redial Attempts to a number greater than one, and NcFTP will automatically redial the remote site if the connection failed. ═══ 10.16. Redial Attempts ═══ When redialing a remote system, NcFTP will sleep X number of seconds. You can specify the amount of time to sleep between redial attempts. ═══ 10.17. Pause Between Redials ═══ Specifies the amount of time to sleep between redial attempts. ═══ 10.18. Pager in Separate Window ═══ NcFTP has the ability to start your pager program in a separate window by using the bredir, bpage and bls commands. If you would like ALL pager related commands to start in a separate window, set Pager In Separate Window to yes. ═══ 10.19. Background Window in Full Screen Session ═══ This option is not available from the prefs screen, it must be set manually in the $HOME/.ncftp/prefs file. This option will toggle whether background operations (bpage, bredir, etc.) will run in an OS/2 Window (default) or in a Full Screen Session. To have all background programs run in a Full Screen Session, add the following line to your prefs file: background-fullscreen 1 ═══ 10.20. Toggle NcFTP's Bell ═══ This option is not available from the prefs screen, it must be set manually in the $HOME/.ncftp/prefs file. This option will turn on (default) or turn off NcFTP's bell. Normally, NcFTP will signal when a command is complete by emmitting a beep. If you find this behaviour annoying, you can add the following line to your prefs file: quiet-mode 1 ═══ 11. Running Behind a Firewall or Gateway ═══ NcFTP v2.3.0 will work with a firewall, gateway or a system that utilizes ip masquerading. To insure NcFTP functions properly, do the following: In 'prefs', set Default FTP mode to: Passive, but fall back to port if needed or Passive FTP only (PASV) If you experience timeouts, increase the network timeout field in prefs. Network timeout: 60 Also, insure the remote host can handle PASV commands and that option is set to yes in the bookmarks editor: Can use passive FTP: Yes ═══ 12. Color Configuration ═══ In addition to remote-host specific options and global options that are user-configurable, NcFTP allows you to change the program's appearence by editing the programs colors. Run the colors command from within the program. The NcFTP Screen is broken down into 4 areas, List, Prompt, Input and Status. Below is a screen snapshot showing each area: ╔═════════════════════════════════════════════════════════════════════════╗ ║Port Version: NcFTP v2.3.0 - OS/2 ║ ║ ║ ║ ║ ║Local Hostname: ecsnet.com ║ ║ ║ ║Tip: If you need to report a bug, send me a ~/.ncftp/trace file too. To ║ ║ enable tracing, turn on trace logging from the Prefs window, or type║ ║ "set trace 1" from the command line. Then re-create your bug, quit ║ ║ the program, and send the trace file to mevans@ecsnet.com. ║ ║ ║ ║ ║ ║ List Area ║ ║ ║ ║ ║ ║----------------------------------Status Bar----------------------------║ ║Prompt Area> Input Area ║ ╚═════════════════════════════════════════════════════════════════════════╝ ═══ 13. Command Reference ═══ Provides help on all NcFTP v2.3.0 commands. ═══ 13.1. ? -- Help ═══ Help from the command shell, the program prints the names of all of the supported commands. From there, you can get specific help for a command by typing the command after, for example: ? open prints information about the open command. ═══ 13.2. ! -- OS/2 Shell ═══ Spawns a command shell. To spawn a shell, just do: ! You can also pass commands to the shell by placing the command to execute immediately following the !, for example: !dir/w will display a directory listing and then prompt the user to [Hit Return] to continue. If a command is passed to the OS shell, NcFTP will prompt the user to [Hit Return] when the command completes. If the program is shelled to OS/2, by using only a !, NcFTP will not prompt the user to [Hit Return] upon exiting the shell. ═══ 13.3. ascii -- Sets transfer type to ASCII ═══ Sets the file transfer type to ASCII text. In this mode, UNIX linefeeds will be translated to Carriage Return / Linefeed pairs. The ascii command requires no parameters. ═══ 13.4. bdir -- Background Dir (Directory in New Window) ═══ The bdir command prints a detailed directory listing to your in a separte window. It tries to behave like UNIX's /bin/ls -l command. If the remote server seems to be a UNIX host, you can also use the same flags you would with ls, for instance bdir -rt would try to act like /bin/ls -lrt would on UNIX. Special Note: On large directory listings, you may have to scroll to the end of the directory listing before NcFTP regains control. ═══ 13.5. binary -- Sets Transfer Type to binary ═══ Sets the file transfer type to Binary. In this mode, no translations are performed between the local host and the remote host. ═══ 13.6. bls -- Background File Listing ═══ The bls command is equivalent to ls, only it feeds it's output to your pager in a separate window. This command is primarily for line mode because directory listings can scroll offscreen. If you do a normal ls while in visual mode, if it would go offscreen, the built-in pager kicks in automatically. NcFTP v2.3.0 OS/2 Port Beta 6 12 ═══ 13.7. bookmark -- Create / Update bookmark ═══ The bookmark command will create or update a bookmark using the current host and directory. If you had logged into ftp.leo.org and were in the /pub/os2/incoming directory, you can use the bookmark command to save this information in the bookmarks file. bookmark leo This would save ftp.leo.org in the bookmarks file with an alias of leo. ═══ 13.8. bookmarks -- Bookmark Editor ═══ The bookmarks command will take you into the Bookmark Editor Screen. See the Bookmarks Section for more information. ═══ 13.9. bpage -- Background Browse Remote Files ═══ The bpage command lets you browse a remote file one page at a time in a separate window. This is useful for reading README's on the remote host without downloading them first. This command uses whatever program you have set the pager field in the Preference screen to view the file. bpage can take multiple file names as parameters, meaning you can specify one or several files to view, for example: bpage 00index.txt newfiles would display both files, 00index.txt and newfiles using your pager in a separate window. ═══ 13.10. bredir -- Background Re-display Last Directory ═══ The bredir command give you a way to re-display the last directory listing. The program saves the output from the last dir or ls command you did, so if you want to see it again you can do this without wasting network bandwidth. The bredir command feeds the output to your pager in a separate window. ═══ 13.11. bye -- Close connections and Exit ═══ The bye command closes all connections and exits NcFTP. ═══ 13.12. cat -- Browse Remote Files ═══ The cat command lets you browse a remote file one page at a time. This is useful for reading README's on the remote host without downloading them first. This command uses the internal NcFTP viewer. ═══ 13.13. cd -- Change Remote Directory ═══ The cd command changes the working directory on the remote host. Use this command to move to different areas on the remote server. If you just opened a new site, you might be in the root directory. Perhaps there was a directory called /pub/news/comp.sources.d that someone told you about. From the root directory, you could: cd pub cd news cd comp.sources.d or, more concisely, cd /pub/news/comp.sources.d Then, commands such as get, put, and ls could be used to refer to items in that directory. ═══ 13.14. close -- Close Connection with Remote Host ═══ The close command will disconnect from the remote host. If this is the first time you have connected to this host, a new entry for this host will be placed in your bookmarks file. ═══ 13.15. colors -- Color Configuration Editor ═══ The colors command takes you into the color configuration screen. Here you can select your favorite foreground and background colors for NcFTP. ═══ 13.16. create -- Create empty file on Remote Host ═══ Sometimes it may be necessary to use the create command. This makes an empty file on the remote host. This can be useful when you are unable to contact the remote server's administrator, but hope someone in the know will spot your file. For example, create readline2.0.tar_is_corrupt might persuade someone to repost that file. ═══ 13.17. debug -- Turns on/off debugging ═══ The debug command is mostly for use by me and the testers. You could type debug 1 to turn debugging mode on. Then you could see all messages between the program and the remote server, and things that are printed only in debugging mode. If you report a bug, I might ask you to send me a trace file. To do that, you would run the program, and then type debug trace 1 debug without any arguments displays the current debug level. Valid debug levels are 1 thur 5. ═══ 13.18. delete -- Deletes remote files ═══ If you need to delete a remote file you can try the delete command. Much of the time this won't work because you won't have the proper access permissions. This command is obsolete, you should use the rm command instead. ═══ 13.19. dir -- Remote Detailed Directory Listing ═══ The dir command prints a detailed directory listing. It tries to behave like UNIX's /bin/ls -l command. If the remote server seems to be a UNIX host, you can also use the same flags you would with ls, for instance dir -rt would try to act like /bin/ls -lrt would on UNIX. ═══ 13.20. echo -- Echo's string to console ═══ The echo command wouldn't seem very useful, but it can be nice for use with the program's macros. It behaves like the equivalent command does under a UNIX shell, but accepts some extra flags. All percent flags are fed through strftime(4). So you could type echo It is now %H:%M on %B %d. and you should get something like this printed on your screen: It is now 19:00 on January 22. There are also at flags, which the program expands: @H : Name of connected host @D : Full pathname of remote current working directory @J : Short name of remote current working directory @N : Newline. @n : Bookmark name of connected host Example: echo "Connected to @H at %H:%M." >> junk If you later looked at the contents of junk, it might say: Connected to sphygmomanometer.unl.edu at 20:37. ═══ 13.21. exit -- Exits NcFTP ═══ Closes all open connections and exits NcFTP. ═══ 13.22. get -- Retrieves files from remote host ═══ The get command copies files from the current working directory on the remote host to your machine's current working directory. To place a copy of README in your local directory, you could try: get README The get command has some powerful features which are described below, in SPECIAL DOWNLOADING FEATURES. Syntax: get [-flags] file1 [file2...] Flags: -C : Force continuation (reget). -f : Force overwrite. -G : Don't use wildcard matching. -R : Recursive. Useful for fetching whole directories. -n X : Get selected files only if X days old or newer. -z : Get the remote file X, and name it to Y. Examples: get README get README.* get -G **Name.with.stars.in.it** get -R new-files-directory get -z WIN.INI ~/junk/windows-init-file", ═══ 13.23. hosts -- Edit settings for each remote host ═══ Edit the settings for each remote host ═══ 13.24. lcd -- Local Change Directory ═══ The lcd command is the first of a few l commands that work with the local host. This changes the current working directory on the local host. If you want to download files into a different local directory, you could use lcd to change to that directory and then do your downloads. Issuing an lcd with no parameters will change the local directory to the directory specified by the HOME environment variable. ═══ 13.25. less -- Views remote file one page at a time ═══ Views a file from the remote host one page at a time. ═══ 13.26. lls -- Local directory listing ═══ Another local command that comes in handy is the lls command, which runs OS/2's dir command on the local host and displays the results in the program's window. You can use the same flags with lls as you would in your command shell, so you can do things like: lcd ~/doc lls /w p*.txt ═══ 13.27. lookup -- Name server lookup ═══ The program also has a built-in interface to the name service via the lookup command. This means you can lookup entries for remote hosts, like: lookup cse.unl.edu ftp.cs.unl.edu sphygmomanometer.unl.edu prints: cse.unl.edu 129.93.33.1 typhoon.unl.edu 129.93.33.24 sphygmomanometer.unl.edu 129.93.33.126 There is also a more detailed option, enabled with -v, i.e.: lookup -v cse.unl.edu ftp.cs.unl.edu prints: cse.unl.edu: Name: cse.unl.edu Address: 129.93.33.1 ftp.cs.unl.edu: Name: typhoon.unl.edu Alias: ftp.cs.unl.edu Address: 129.93.33.24 You can also give IP addresses, so this would work too: lookup 129.93.33.24 prints: typhoon.unl.edu 129.93.33.24 ═══ 13.28. lpage -- Views local file one page at a time ═══ The lpage command views a local file one page at a time. By default, the program uses your pager program to view the files. You can choose to use the built-in pager by using the -b flag. Example: lpage -b ~/.ncftp/bookmarks ═══ 13.29. lpwd -- Print local current directory ═══ The lpwd command is prints the current local directory. Use this command when you forget where you are on your local machine. ═══ 13.30. ls -- Remote brief directory listing ═══ The ls command prints a brief directory listing. It tries to behave like UNIX's /bin/ls -CF command. If the remote server seems to be a UNIX host, you can also use the same flags you would with ls, for instance ls -rt would try to act like /bin/ls -CFrt would on UNIX. ═══ 13.31. mget -- Multiple get ═══ This command is obsolete with NcFTP 2.3.0. Refer to the get command. ═══ 13.32. mkdir -- Make Remote Directory ═══ The mkdir command tries to create a new directory on the remote host. For many public archives, you won't have the proper access permissions to do that. ═══ 13.33. more -- Views remote file one page at a time ═══ Views a file from the remote host one page at a time ═══ 13.34. mput -- Multiple puts ═══ The mput command is there in case you need to upload multiple files to remote hosts. For example, if you wanted to send some files to a remote host, you could do: lcd ~/docs/files mput 02.txt 03.txt 05.txt 07.txt 11.txt The mput command won't work if you don't have the proper access permissions on the remote host. Also, this command doesn't have any of the special features that the get command has, except for the -z option. This command is obsolete in NcFTP 2.3.0, please refer to the put command. ═══ 13.35. open -- Opens a connections with remote host ═══ The open command connects you to a remote host. Many times, you will simply open a host without using any flags, but nonetheless the open command has some flags to enable certain features. To force an anonymous open, use the -a flag. On the ftp.probe.net machine, which is the official archive site for NcFTP, You may have a need to use both anonymous logins and user logins. The Bookmark Editor remembers type of login you used last, so if the last time was a user login, you could use the -a flag to switch back to the anonymous login type without having to use the Bookmark Editor to change that. Likewise, you could use the -u flag to force a user open. Then you could give your account name and password to access that account. Many of the big archive sites like wuarchive.wustl.edu are busy, so you aren't guaranteed a connection to them. The program lets you redial sites periodically, until a connection succeeds. Use the -r Redial itself has a few parameters. You can set the delay, in seconds, of the time spent waiting between redials. You can also have the program give up after a maximum number of redials is reached. Here's an example that fully utilizes redial mode: open -r -d 75 -g 10 bowser.nintendo.co.jp The -r turns on redialing, the -d sets the redial delay to 75 seconds, and the -g flag limits redialing to 10 tries. If you like, you can just trust the default redial settings and only use -r. The open command will run the Bookmark Editor if you don't supply a hostname to open. You can use the Bookmark Editor to select a host and open it by hitting the return key. Syntax: Flags: -a : Open anonymously. -u : Open with username and password prompt. -p X : Use port number X when opening. -r : Redial until connected. -d X : Redial, delaying X seconds between tries. -g X : Give up after X redials without connection. Examples: open sphygmomanometer.unl.edu open -u bowser.nintendo.co.jp open -r -d 75 -g 10 sphygmomanometer.unl.edu ═══ 13.36. page -- Browse remote file one page at a time ═══ The page command lets you browse a remote file one page at a time. This is useful for reading README's on the remote host without downloading them first. This command uses whatever program you have set the pager field in the Preferences screen to view the file. ═══ 13.37. pdir -- Remote detailed directory viewed thru pager ═══ The pdir and pls commands are equivalent to dir and ls respectively, only they feed their output to your pager. These commands are primarily for line mode because directory listings can scroll offscreen. If you do a normal ls while in visual mode, if it would go offscreen, the built-in pager kicks in automatically. Therefore it is not recommended to use pdir and pls while in visual mode. ═══ 13.38. pls -- Remote brief directory viewed thru pager ═══ The pdir and pls commands are equivalent to dir and ls respectively, only they feed their output to your pager. These commands are primarily for line mode because directory listings can scroll offscreen. If you do a normal ls while in visual mode, if it would go offscreen, the built-in pager kicks in automatically. Therefore it is not recommended to use pdir and pls while in visual mode. ═══ 13.39. predir -- Redisplay remote directory thru pager ═══ The redir and predir commands give you a way to re-display the last directory listing. The program saves the output from the last dir or ls command you did, so if you want to see it again you can do this without wasting network bandwidth. The predir command is the same as redir, except that the output is fed to your pager. ═══ 13.40. prefs -- Configure NcFTP's Options ═══ Lets you configure the program's settings (Visual mode only) ═══ 13.41. put -- Upload file to remote host ═══ The put command allows you to upload files to a remote host. For example, if you wanted to send some files to a remote host, you could do: lcd ~/docs/files put 02.txt 03.txt 05.txt 07.txt 11.txt The put command won't work if you don't have the proper access permissions on the remote host. Also, this command doesn't have any of the special features that the get command has, except for the -z option. Syntax put [-flags] file1 [file2...] sends a file to the remote host Flags: -z : Send the local file X, and name the remote copy to Y. Examples: put README put -z ~/junk/windows-init-file WIN.INI ═══ 13.42. pwd -- Print current remote working directory ═══ The pwd command prints the current remote working directory. In visual mode, this is in the status bar. ═══ 13.43. redir -- Redisplay remote directory ═══ The redir and predir commands give you a way to re-display the last directory listing. The program saves the output from the last dir or ls command you did, so if you want to see it again you can do this without wasting network bandwidth. The predir command is the same as redir, except that the output is fed to your pager. ═══ 13.44. rename -- Rename remote file ═══ If you need to change the name of a remote file, you can use the rename command, like: rename SPHYGMTR.TAR sphygmomanometer-2.3.1.tar ═══ 13.45. rglob -- Test remote for wildcard matching ═══ Tests remote filename wildcard matching ═══ 13.46. q -- Quit NcFTP ═══ Quits NcFTP ═══ 13.47. quit -- Quit NcFTP ═══ Of course, when you finish using the program, type quit to end the program (You could also use bye, exit or ^D). ═══ 13.48. quote -- Send commands to remote host ═══ The quote command can be used to send a direct FTP Protocol command to the remote server. Generally this isn't too useful to the average user (or me either). ═══ 13.49. rhelp -- Display remote host help ═══ The rhelp command sends a help request to the remote server. The list of FTP Protocol commands is often printed, and sometimes some other information that is actually useful, like how to reach the site administrator. Depending on the remote server, you may be able to give a parameter to the server also, like: rhelp NLST One server responded: Syntax: NLST [ path-name ] ═══ 13.50. rm -- Remove a remote file ═══ If you need to delete a remote file you can try the rm command. Much of the time this won't work because you won't have the proper access permissions. This command doesn't accept any flags, so you can't nuke a whole tree by using -rf flags like you can on UNIX. ═══ 13.51. rmdir -- Remove a remote directory ═══ Similarly, the rmdir command removes a directory. Depending on the remote server, you may be able to remove a non-empty directory, so be careful. ═══ 13.52. set -- Set NcFTP options ═══ The set command is provided for backward compatibility with older versions of the program, and is superseded by the prefs command. The basic syntax is: set option value Where the option is the short name of the corresponding field in the Preferences screen. The short names of the preferences fields can be found by browsing your ~/.ncftp/prefs file. This command is mainly for use with line mode , but since that mode is no longer officially supported, The use of these commands should be discouraged. The list of valid set options are: anonopen Default open mode: anonpass Anonymous password: blank-lines Blank lines between cmds: ftp-mode Default FTP mode: logsize User log size: maxbookmarks Max bookmarks to save: pager Pager: progress-meter Progress meter: remote-msgs Remote messages: startup-lcwd Startup in Local Dir: startup-msgs Startup messages: timeout Network timeout: trace Trace logging: utime File timestamps: visual Screen graphics: redialattempts Redial Attempts: redialpause Pause Between Redials: pagenewwin Pager in Separate Window: quiet-mode Turns on/off the beep: background-fullscreen Spawns viewer in Full Screen Session: ═══ 13.53. site -- Send site specific command to remote host ═══ One obscure command you may have to use someday is site. The FTP Protocol allows for site specific commands. These site commands vary of course, but one common sub-command that is useful that some sites support is chmod, i.e.: site chmod 644 README Try doing one of these to see what the remote server supports, if any: rhelp SITE site help ═══ 13.54. type -- Set transfer type (ascii, binary, image) ═══ You may need to change transfer types during the course of a session with a server. You can use the type command to do this. Try one of these: type ascii type binary type image ═══ 13.55. verbose -- Sets verbosity level of NcFTP ═══ Sets verbosity mode to 0, 1, 2, or 3 ═══ 13.56. version -- Display NcFTP's version ═══ If you ever need to contact me about the program, please familiarize yourself with the version command. This command dumps a lot of information that tells me which edition of the program you are using, and how it was installed on your system. Here's a way to save the output of this command to a file, so you can send it to me: version > version.txt ═══ 14. Special Downloading Features ═══ You probably already know that you use the get command to copy files on the remote host to the local host. But the get command has a few other tricks that you might find useful. First of all, ncftp skips files you already have. If you try to get file24 and there is a file named file24 in the current local directory already, the program uses some additional heuristics to determine if it should actually waste network bandwidth to download it again. The program tries to get the date and size of the remote file file24. If that file has the exact same date and size as the local file file24, the program will skip over that file. If the program could not get the date or size of the remote file, or the size differs, the program will go ahead and fetch the file. In addition, if the local file's date is newer than the remote file's date, the program skips the download because it concludes you already have a more recent version. What all this means for you is that you can use the program to mirror another archive. For example, you might have a task that requires you keep a mirror of all the files of a remote directory called files. In that directory, there might be dozens of files, some of which are updated occasionally. You could use ncftp to help you out by setting the appropriate local and remote directories, then simply doing: get * The program will skip over the old files, and only download the files that you don't have or have been updated since the last time. Nonetheless, you may want to ignore the program's advice and download a file anyway, despite the program's thinking that you don't need to. You can use the -f flag with get to force a download: get -f README You may also need to use the -C flag to force the program to continue downloading where it left off. This feature is called forced reget for historical reasons. You can also turn off wildcard matching with get by using the - G flag. Other FTP programs used the syntax get remote-file [local-file] which allowed you to specify a local pathname for the file you were trying to download. NcFTP differs in that respect, and if you used the older programs, you would find that the program's behaves get more like those other program's mget command. This means that in NcFTP,that get file01 file02 tries to download remote files named file01 and file02. If you like, you can get that older behavior by using the -z flag, so: get -z file01 ../junk/files/01.txt would get file01 and use the local name ../junk/files/01.txt. Another thing that get does is that you can use the -n flag to fetch files that are a certain number of days old or newer. If you just want to get the newest files at an archive, you don't have to use a full mirror. You can just say download all files that are 3 days old or newer. Do that by going to a directory, and trying: get -n 3 * The program also has reget mode built into the get command. Other FTP programs provided a reget command, which was useful when you lost a connection during a download. Instead of the remote host resending the entire file, you could use the reget command to continue the transfer where it was cut off. NcFTP has this capability built-in, and it examines the date and size of the remote file and local file to determine if the program should continue where it left off last time. If the dates are the same, but the local file is smaller, the program attempts to reget. The last, and most wasteful feature of get is recursive mode, which is turned on with the -R flag. This feature lets you download an entire directory's contents, i.e.: get -R /pub/info/help That creates a directory called ./help in the current local directory, and copies all files and subdirectories into it. Please use some discretion with this feature. If you get a large directory, you could really bog down the remote host. Archive administrators are providing a public service, so don't abuse the archive so much that they have to shut down public access because the real users of that archive can't get their work done. ═══ 15. Macros ═══ The program has a simple macro/alias facility. You can use macros to roll your own commands, or do things when certain events happen. To use macros, you will need to create and edit the macros file in your .ncftp subdirectory of your home directory. Your ~/.ncftp directory is created for you automatically the first time you run the program, but you have to make the macros file yourself since most users won't have a need for them. You can have any number of macros. The syntax is: macro macro-name macro-body... end Here's a simple macro that users of the old ftp program might appreciate: macro binary type i end You could run that macro simply by running the program and typing the macro name as if it were a regular ncftp command. Macros can also have parameters, much like the Korn Shell's shell functions and the C-Shell's aliases. These parameters are sent to your macro, and if your macro uses the appropriate dollar variables, they are expanded. To illustrate, try this macro: macro cdls cd $1 ls end To run that macro, open a connection and try: cdls /pub That would try to cd to /pub, and then try to list its contents with ls. Dollar variables are somewhat like those in the Bourne and Korn shells. Example syntax: $4 : Argument4 $* : All arguments. $@ : All arguments, each of them surrounded by double quotes. $(2-5) : Arguments 2, 3, 4, and 5. $(2,5) : Arguments 2 and 5. $(3+) : Arguments 3, 4, 5, ..., N. A better way to code the cdls macro might be: macro cdls cd $1 ls $(2+) end There are some special macros, called event macros . The program looks for macros by special names, and if they exist, runs the macro when that event happens. One event macro is the .start.ncftp macro. If you have a macro by that name defined in your macros file, the program will run that macro each time you run the program. Similarly, there is also a .quit.ncftp macro that is run each time you quit the program. Another set of event macros are site-specific. For example, if you have a site bookmarked as typhoon You could then define macros named .open.typhoon and .close.typhoon which would run each time you opened and closed typhoon. Another, more generic set of event macros are the .open.any and .close.any macros which run when you open or close any site. One possible use for these macros is to run separate shell scripts to do some processing after you finish using a site. You could have a macro like this: macro .quit.ncftp echo "Started post-processing downloads at %H:%M:%S" !sh ~/scripts/download-decoder echo "Finished post-processing downloads at %H:%M:%S" end Another use is to duplicate the old macdef init hack that the traditional ftp program used in its .netrc file. For example: macro .open.infomac echo "Getting recent files list" get -z /pub/info-mac/help/recent-files ~/docs/recent ls -lrt end ═══ 16. Using Colon Mode ═══ The colon-mode feature is used from your shell's command line. In ancient times, way back during the Disco Era, you could use a program called tftp to fetch a file using the Internet standard Trivial File Transfer Protocol. You could use that program to do something like this from within its shell: get wuarchive.wustl.edu:/graphics/gif/README and that would call wuarchive and fetch the README file. You can use this program to do the same thing from your shell's command line: csh> ncftp wuarchive.wustl.edu:/graphics/gif/README csh> head README This tells your shell, in this case the C-shell to run NcFTP, which would open wuarchive, fetch /graphics/gif/README and write the file /README in the current working directory, and then exits. The colon-mode feature is nice if you don't want to browse around the remote site, and you know exactly want you want. It also comes in handy in shell scripts, where you don't want to enter the command shell, and might not want the program to spew output. You can use the Uniform Resource Locator standard also. For example, this would work: csh> ncftp ftp://wuarchive.wustl.edu/graphics/gif/README There are times where you might not want the program to write a colon-mode file in the current working directory, or perhaps you want to pipe the output of a remote file into something else. Colon-mode has options to do this. It was inspired by the guy who wrote the ftpcat perl script. The -c option tells the program to write on the standard output stream. The -m option pipes the file into your pager (like ). Of course this won't work if the more thing you give colon-mode is a directory! This example just dumps a remote file to stdout: csh> ncftp -c wuarc:/graphics/gif/README This example redirects a remote file into a different location: csh> ncftp -c wu:/README > ~pdietz/thesis.tex This one shows how to use a pipeline: csh> ncftp -c wuarc:/README | tail | wc -l 10 csh> This shows how to page a remote file: csh> ncftp -m wuarc:/graphics/gif/README CAUTION: NcFTP will place files in the current directory when using colon mode. ═══ 17. Using Line Mode ═══ The only reason line mode is provided is so that the primitive operating systems whose curses library is missing or dysfunctional won't render the program completely useless. exceptions of the functions that require visual mode, such as the Preferences screen and the Bookmark Editor . You will have to edit the ~/.ncftp/prefs and ~/.ncftp/bookmarks file manually, with a text editor. As a small consolation, you get to use the full-powered line- editing libraries, like GNU Readline if they were compiled with the program. ═══ 18. Summary of Command Line Options ═══ When you invoke the program from your shell, there are dash flags you can use like you can with most other UNIX programs. Here's a list of options you can use from the command line: -D : Turns on debugging mode and tracing. -V : Uses visual mode for this session. -L : Uses line mode for this session. -H : Prints the information from the version command and exits. When you turn on tracing, the program writes a log with debugging information to a file called trace in your subdirectory of .ncftp your home directory. If you need to report a bug, it would be helpful to mail me the file so I can track it down better. trace In addition to the program flags, you can also use flags from the open and get commands with a colon mode path. Here's a really complex example: csh> ncftp -r -d 120 -n 3 sphygmomanometer.unl.edu:/pub/stuff/* This tries redialing that host every two minutes, and fetching all files from the /pub/stuff directory that are 3 days old or newer. ═══ 19. Author ═══ NcFTP was written by Mike Gleason, NCEMRSoft (mgleason@probe.net). NcFTP is copyrighted 1995 by NCEMRSoft. All rights reserved. As of this writing, the most recent version is archived in /pub/ncftp, on ftp.probe.net. The OS/2 Port of NcFTP v2.3.0 was done by Mark R. Evans (mevans@ecsnet.com). ═══ 20. Thanks ═══ Ideas and some code contributed by my partner, Phil Dietz, NCEMRSoft (dietz@wtc.com). Thanks to everyone who has helped test the program, and sent in feedback over the years. Your support is what drives me to improve the program! I'd like to thank my former system administrators, most notably Charles Daniel, for making testing on a variety of platforms possible, letting me have some extra disk space, and for maintaining the UNL FTP site. I also thank Dale Botkin and Tim Russell at Probe Technology, for giving ncftp a home on probe.net, the midwest's best connection to the internet. For testing above and beyond the call of duty, I am especially grateful to: Phil Dietz, Kok Hon Yin (hkok@cse.unl.edu), Andrey A. Chernov (ache@astral.msk.su). Thanks to Tim MacKenzie (t.mackenzie@trl.oz.au) for the filename completion code. Thanks to DaviD W. Sanderson (dws@ssec.wisc.edu), for helping me out with the man page. ═══ 21. Thanks From Mark Evans ═══ I would like to thank Eberhard Mattes for his emx development environment. Without his efforts, this port would not be possible. Also, I would like to thank Steve Willer for his original port of NcFTP v1.9.3. He did an excellent job and came up with some inovative ideas which I have included with this port. Last but not least, the group that helped me beta test this port and put up with my programming errors and almost daily betas: macwarp@ix.netcom.com John McNamara bob@bridge.net Bob Lyons oscar@primenet.com Oscar Fowler gunter@htlsun1.fzk.de Gunter Spranz acowan@uoguelph.ca Andrew Cowan rob@iconz.co.nz Rob beaufour@mailhost.net Allan Beaufour Larsen phydoux@utw.com Michael Monsen satori@ibm.com Patrick McKane morpheaus@kuwait.net Ahmad Al-Nusif ═══ 22. Bugs ═══ Due to a limitation in the curses library, scrolling may be slow in visual mode. Shell escapes, suspending (^Z) and resuming, and interruping (^C) still have quirks with visual mode. There are no such sites named bowser.nintendo.co.jp or sphygmomanometer.unl.edu. ═══ 23. Bugs in the OS/2 Port ═══ During a transfer, Ctrl-C will abort the transfer. Subsequent Ctrl-C's from a transfer will close the connection with the host. * * * ALL BUG REPORTS FOR THE OS/2 PORT OF NcFTP V2.3.0 SHOULD BE SENT TO Mark Evans (mevans@ecsnet.com) * * * ═══ 24. Revision History ═══ 02-17-96 Release 2.3.0.OS2 Beta 9 Public Beta  Fix: The new 'auto-reget' feature added in Beta 8 broke the forced overwrite function. This has been fixed and the auto-reget code has been enhanced to be a little smarter.  Chg: Fixed NcFTP's ability to display DBCS. This should allow Chineese character sets to be displayed properly. Please provide feedback if this does not work.  Add: Added firewall.txt document. This better documents how to run NcFTP behind a firewall or gateway.  Chg: NcFTP is now much smarter about determining your home directory (where it places it's config files). If you have a conflict with the HOME environment var, you can use NCFTPDIR instead. If you do not have a HOME or NCFTPDIR environment var set, NcFTP will default to the ETC environment variable. If it is not set, NcFTP will display a warning message that it cannot find a home and will not save preferences.  Fix: In the last release, I thought I had fixed the problem with pag *.txt not pausing between files. Under certain circumstances, this still didn't work. It should now function properly.  Chg: If you change your download directory in the prefs screen, NcFTP immediately changes to that new directory.  Chg: Changed the .SUBJECT extended attribute to be an ftp URL showing where the file was ftp'ed from.  Chg: Before, NcFTP would query the file system, if it was not equal to HPFS it would use FAT naming conventions. Now, NcFTP checks if FAT, if not, uses long names.  Fix: Local directory commands such as LLS were broken when using CMD.EXE as the shell. 02-03-96 Release 2.3.0.OS2 Beta 8 Public Beta  Fix: Although the original documentation from the Unix version of NcFTP v2.3.0 claimed that reget was automatic, it was never implemented in the code. Reget support is only there if you specify the -C switch on the get command. I have added support for automatic reget and it should work without adding the -C command line switch. If there are any problems with this, please let me know.  Fix: Passive mode did not work properly for those running behind a firewall. I believe this is fixed now, if not PLEASE let me know.  Fix: page *.txt when using more.com as the pager would not pause at end of the file.  Fix: Bookmark editor allows you to jump to host names by using uppercase letters. This did not work properly when bookmark names had uppercase names.  Fix: bdir would not reset the output to stdout when host transmission was interrupted. Output would go to the second window.  Fix: Prefs - Q -Redial Pause time would default to 60 seconds when you specified 0 as the delay time.  Add: Added a new 'hidden' option: background-fullscreen If you add background-fullscreen 1 to your prefs file, all b* commands (bdir, bpage, etc), will spawn a full screen session instead of a window.  Add: F1 key will now call "view ncftp.inf" from within NcFTP.  Fix: Under certain conditions, editing the bookmarks file would cause the program to trap.  Fix: All keypad keys now work.  Fix: When lines wrapped, NcFTP would not properly count them and you would loose a line from the display.  Add: Included an icon for NcFTP in the release archive. 01-27-96 Release 2.3.0.OS2 Beta 7 Public Beta  Chg: Moved NcFTP Documentation to an OS/2 .inf file.  Chg: Improved NcFTP's process semaphore handling.  Fix: NcFTP would open files in ASCII mode on systems that do not support the SIZE or MDTM commands.  Fix: NcFTP no longer requires GNU File Utilities to work. It now uses OS/2's internal commands (or 4OS2's).  Fix: pls and pdir caused a [Hit Return] to be printed when it was not necessary.  Fix: If you do a 'forced reget' on a site that does not support this command, the Stat Progress Meter would not display the correct download count.  Enh: Added 'quiet-mode' to preferences file. When set to 1 (TRUE), it will supress all beeps that NcFTP uses to alert you of something. To turn this option on, you must manually edit the $(HOME)\.ncftp\prefs file and put the line: quiet-mode 1 Sorry, but I'm out of room on the preferences screen!  Chg: When aborting a long directory listing, NcFTP actually has to complete the transfer. I have added a msg that displays when you hit 'q' stating that the transfer is aborting.  Enh: Added option to hosts editor to Save Directory on Exit. Each time you log into an ftp site, the directory you were last in is saved. If you do not want NcFTP to save the last directory, and always use the directory specified in the 'Directory' field, set 'Save Dir on Exit' to 'NO'.  Add: Wrote a small utility to convert your old v1.9.3 ncrecent file into a v2.3.0 ~/.ncftp/bookmarks file. This utility will add to, not delete your existing bookmarks file. Pgm Name: ncf-1to2.exe 01-22-96 Release 2.3.0.OS2 Beta 6 - Public Beta  Fix: Changed error message on domain name not found to tell user to set domain name.  Fix: Ctrl-C would exit NcFTP.  Fix: When re-dialing, you would have to hit Ctrl-C multiple times to stop re-dialing. Also, it would sometimes completely abort NcFTP. 01-21-96 Release 2.3.0.OS2 Beta 5  Enh: NcFTP is much smarter when dealing with command shells. If you simply do a ! to shell to OS/2, it will not prompt you to [Hit Enter], but if you run a command, it will pause so you can see the output. Also, it automatically senses when you are using the the OS/2 more.com command and will always prompt you to [Hit Return] when it finishes.  Fix: When using the OS/2 more command for your pager, files were being transfered in binary mode, not translating the LF to a CRLF, causing the screen to be unreadable.  Enh: Added transfer mode to all status meters.  Fix: If NcFTP cannot determine the HOSTNAME, it will search the environment for HOSTNAME=???? and use that value as the hostname. If NcFTP cannot determine the DOMAIN, it will search the environment for DOMAIN=??? and use that value as the hostname.  Fix: lpage * would try to display directory names.  Fix: put * would try to send directory names.  Fix: get -R * had problems on certain systems. I think I have it working properly all the time.  Fix: NcFTP was not always setting the local file time to that of the server. It would set the local time 1 second less than the remote file, causing re-gets.  Fix: mput or put with multiple files did not work. I have fixed this in the code, but it requires that LS.EXE be on your system. NcFTP gets it's file info from the output of LS.EXE.  Fix: lpage caused a [Hit Return] when it was opened in another window. A few other stray [Hit Return]'s were removed.  Chg: The 'Escape' key now clears the input line like OS/2.  Fix: The keypad Enter key now works. 01-19-96 Release 2.3.0.OS2 Beta 4  Fix: I didn't completely fix the problem with local files being closed when aborting a transfer. I believe they are all fixed now.  Fix: The Progress Stat Meter is now _REALLY_ fixed.  Fix: Domain name not found error message removed and a work around put into place.  Fix: Timeouts after transfers. I have increased the timeout period and this should solve the problem.  Fix: Ctrl-C only worked on the first open command. It now works every time.  Fix: lpage command would not display in a separate window when Pager in separate window was enabled.  Chg: Now do a clear screen before calling shell.  Chg: Added [Hit Return] after shell commands. 01-17-96 Release 2.3.0.OS2 Beta 3  Fix: Local files were not closed properly when aborting a transfer (only occured on sites that do not support the ABOR command).  Fix: Progress Stat Meter did not display the proper number of bytes recieved when doing a reget.  Fix: Could not perform a 'get' after an aborted get.  Fix: Recursive gets on a FAT partition would store the full path in the extended attribute.  Chg: Talked with the original author, Mike Gleason and we have reached an agreement on screen changes concerning his name and copyright.  Chg: No longer use the 'i.am.running' file to indicate NcFTP is running. I'm using OS/2 semaphores, which works much better incase one session crashes, there is no cleanup required with semaphores, OS/2 closes them automatically.  Add: Now write: "Retrieved from [hostname]" as the .SUBJECT extended attribute. Nice to help you remember where things came from.  Add: Added 3 new items to the preferences screen: Maximum Redials Redial Delay Pager in new window Max Redials let's you set the auto-redial as the default. If it is set to anything greater than 1, if you get a 'Max Users logged on' msg from the host, NcFTP will automatically try again until it is logged in or hits the maximum number of redials. This option is also available on a per 'open' instance thru the open command. Redial Delay is the amount of time to pause between redials. Pager in new window will start your pager program in a separate window for all pager related commands, pdir, pls, page, more, etc. 01-15-96 Release 2.3.0.OS2 Beta 2  Fix: There were several places where / was being used on the local directory or file paths. I've changed all these to \, I hope. Also, the mkdir command was not working, it was passing a -p command switch that is not valid for OS/2 environments. Gunter found this problem when doing a get -R * on a directory, Good Work!  Enh: This version is 'colorized'. You can now edit the colors using the colors command. This creates a file called colors in the ~/.ncftp directory. Here's a description of the 4 types of windows you can configure. +---------------------------------+ | | | | | | | | | List Window | | | | | | | | | +---------------------------------+ | Status Window | +---------------------------------+ |Prompt> Input Window | +---------------------------------+  Add: Borrowed some ideas from the original port (v1.9.3 by Steve Willer) and added the following commands: bpage bls bdir bredir These commands display items through your pager, except they open a new window for the pager. Very nice for displaying a large directory list in one window and then grabbing files with NcFTP in it's window. One anomoly I've noticed, on large directory listings or files, you may need to page down to the end of the file before NcFTP allows you to enter commands. It appears the whole transfer must complete before NcFTP regains control. 01-13-96 Release 2.3.0.OS2 Beta 1 Completed initial port from Unix. The following features have been added:  Support for FAT partitions. NcFTP will create _ncftp directory under the $HOME directory.  File transfers to FAT partitions that do not conform to the 8.3 naming convention will have their names munged into something that works for FAT. The original filename will be placed in the files extended attribute.  Local file directories will use \ instead of /.  This version of NcFTP uses the ~ character as the escape character. The unix version uses the \.  Transfers will timeout just like the unix version. But, I may have the timeouts set too low.